package com.snowy.hidden.biz.controller;


import com.snowy.demo.log.annotation.SysLog;
import com.snowy.framework.common.base.controller.BaseController;
import com.snowy.framework.common.base.vo.LoginUser;
import com.snowy.framework.common.resp.BaseResp;
import com.snowy.framework.common.resp.BaseRespUtil;
import com.snowy.framework.exception.UABPException;
import com.snowy.hidden.biz.domain.req.*;
import com.snowy.hidden.biz.domain.resp.HiddenReportResp;
import com.snowy.hidden.biz.service.HiddenReportService;
import com.snowy.hidden.constant.AuthConstant;
import com.snowy.hidden.constant.IntfErrorCode;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * 隐患管理(HiddenDanger)����Ʋ�
 *
 * @author makejava
 * @since 2023-12-12 15:44:53
 */
@RestController
@RequestMapping("report")
@Slf4j
public class HiddenReportController extends BaseController {
    /**
     * �������
     */
    @Resource
    private HiddenReportService hiddenReportService;


    /**
     * 隐患分页
     *
     * @param hiddenReportAddParam 分页模板
     * @return 删除结果
     */
    @ApiOperation(value = "隐患数据信息上报")
    @SysLog("隐患数据信息上报")
    @PostMapping("/reportInfo")
    public BaseResp reportInfo(@RequestBody HiddenReportAddParam hiddenReportAddParam) {
        try {
            LoginUser userInfo = AuthConstant.userLocal.get();
            BaseResp baseResp = hiddenReportService.add(hiddenReportAddParam,userInfo);
            return baseResp;
        }catch (UABPException e){
            return BaseRespUtil.Error(e);
        }catch (Exception e) {
            log.error("==reportInfo=="+e.getMessage());
            return BaseRespUtil.Error(IntfErrorCode.INFT_ERROR);
        }
    }



//    /**
//     * 分页查询数据
//     *
//     * @param pageQueryModel 分页模板
//     * @return 删除结果
//     */
//    @SysLog("隐患分页查询")
//    @PostMapping("/queryPage")
//    public BaseResp queryPage(@RequestBody HiddenReportPageReq hiddenReportPageReq) {
//        try {
//            BaseResp baseResp = hiddenReportService.queryPage(hiddenReportPageReq);
//            return baseResp;
//        } catch (UABPException e) {
//            return BaseRespUtil.Error(e);
//        }
//    }
//



    /**
     * 分页查询数据
     *
     * @param pageQueryModel 分页模板
     * @return 删除结果
     */
    @SysLog("隐患列表查询")
    @PostMapping("/queryList")
    public BaseResp<List<HiddenReportResp>> queryList(@RequestBody HiddenReportListReq hiddenReportListReq) {
        try {
            BaseResp<List<HiddenReportResp>> baseResp = hiddenReportService.queryList(hiddenReportListReq);
            return baseResp;
        } catch (UABPException e) {
            return BaseRespUtil.Error(e);
        }
    }


    /**
     * 查询隐患列表提供给盯防管理使用
     * 1、已经审核完成隐患 2、较大和重大隐患 3、未转换成任务的隐患
     *
     * @param  分页模板
     * @return 删除结果
     */
    @SysLog("查询隐患列表提供给盯防管理使用")
    @GetMapping("/queryListToTask")
    public BaseResp<List<HiddenReportResp>> queryListToTask() {
        try {
            BaseResp<List<HiddenReportResp>> baseResp = hiddenReportService.queryListToTask();
            return baseResp;
        } catch (UABPException e) {
            return BaseRespUtil.Error(e);
        }
    }


    /**
     * 分配和时人
     *
     * @param hiddenReportAllocateReq 分页模板
     * @return 删除结果
     */
    @ApiOperation(value = "分配核实人")
    @SysLog("分配核实人")
    @PostMapping("/allocateVerifyUser")
    public BaseResp allocateVerifyUser(@RequestBody HiddenReportAllocateReq hiddenReportAllocateReq) {
        try {
            BaseResp baseResp = hiddenReportService.allocateVerifyUser(hiddenReportAllocateReq);
            return baseResp;
        }catch (UABPException e){
            return BaseRespUtil.Error(e);
        }catch (Exception e) {
            log.error("==reportInfo=="+e.getMessage());
            return BaseRespUtil.Error(IntfErrorCode.INFT_ERROR);
        }
    }

    /**
     * 隐患核实
     *
     * @param hiddenReportVerifyReq 分页模板
     * @return 删除结果
     */
    @ApiOperation(value = "隐患核实")
    @SysLog("隐患核实")
    @PostMapping("/verifyHidden")
    public BaseResp verifyHidden(@RequestBody HiddenReportVerifyReq hiddenReportVerifyReq) {
        try {
            BaseResp baseResp = hiddenReportService.verifyHidden(hiddenReportVerifyReq);
            return baseResp;
        }catch (UABPException e){
            return BaseRespUtil.Error(e);
        }catch (Exception e) {
            log.error("==reportInfo=="+e.getMessage());
            return BaseRespUtil.Error(IntfErrorCode.INFT_ERROR);
        }
    }


    /**
     * 隐患定级
     *
     * @param hiddenReportMgrAuditReq 分页模板
     * @return 删除结果
     */
    @ApiOperation(value = "隐患定级")
    @SysLog("隐患定级")
    @PostMapping("/mgrAudit")
    public BaseResp mgrAudit(@RequestBody HiddenReportMgrAuditReq hiddenReportMgrAuditReq) {
        try {
            BaseResp baseResp = hiddenReportService.mgrAudit(hiddenReportMgrAuditReq);
            return baseResp;
        }catch (UABPException e){
            return BaseRespUtil.Error(e);
        }catch (Exception e) {
            log.error("==reportInfo=="+e.getMessage());
            return BaseRespUtil.Error(IntfErrorCode.INFT_ERROR);
        }
    }



    /**
     * 监督站站长审核
     *
     * @param hiddenReportSuperviseAuditReq 分页模板
     * @return 删除结果
     */
    @ApiOperation(value = "监督站站长审核")
    @SysLog("监督站站长审核")
    @PostMapping("/superviseAudit")
    public BaseResp superviseAudit(@RequestBody HiddenReportSuperviseAuditReq hiddenReportSuperviseAuditReq) {
        try {
            BaseResp baseResp = hiddenReportService.superviseAudit(hiddenReportSuperviseAuditReq);
            return baseResp;
        }catch (UABPException e){
            return BaseRespUtil.Error(e);
        }catch (Exception e) {
            log.error("==reportInfo=="+e.getMessage());
            return BaseRespUtil.Error(IntfErrorCode.INFT_ERROR);
        }
    }





    /**
     * 业务部门主任审核
     *
     * @param hiddenReportSuperviseAuditReq 分页模板
     * @return 删除结果
     */
    @ApiOperation(value = "业务部门主任审核")
    @SysLog("业务部门主任审核")
    @PostMapping("/bizAudit")
    public BaseResp bizAudit(@RequestBody HiddenReportSuperviseAuditReq hiddenReportSuperviseAuditReq) {
        try {
            BaseResp baseResp = hiddenReportService.bizAudit(hiddenReportSuperviseAuditReq);
            return baseResp;
        }catch (UABPException e){
            return BaseRespUtil.Error(e);
        }catch (Exception e) {
            log.error("==reportInfo=="+e.getMessage());
            return BaseRespUtil.Error(IntfErrorCode.INFT_ERROR);
        }
    }



    /**
     * 质安环部长审核
     *
     * @param hiddenReportSuperviseAuditReq 分页模板
     * @return 删除结果
     */
    @ApiOperation(value = "质安环部长审核")
    @SysLog("质安环部长审核")
    @PostMapping("/safetyAudit")
    public BaseResp safetyAudit(@RequestBody HiddenReportSuperviseAuditReq hiddenReportSuperviseAuditReq) {
        try {
            BaseResp baseResp = hiddenReportService.safetyAudit(hiddenReportSuperviseAuditReq);
            return baseResp;
        }catch (UABPException e){
            return BaseRespUtil.Error(e);
        }catch (Exception e) {
            log.error("==reportInfo=="+e.getMessage());
            return BaseRespUtil.Error(IntfErrorCode.INFT_ERROR);
        }
    }

    /**
     * 分管领导审核
     *
     * @param hiddenReportSuperviseAuditReq 分页模板
     * @return 删除结果
     */
    @ApiOperation(value = "分管领导审核")
    @SysLog("分管领导审核")
    @PostMapping("/chargeAudit")
    public BaseResp chargeAudit(@RequestBody HiddenReportSuperviseAuditReq hiddenReportSuperviseAuditReq) {
        try {
            BaseResp baseResp = hiddenReportService.chargeAudit(hiddenReportSuperviseAuditReq);
            return baseResp;
        }catch (UABPException e){
            return BaseRespUtil.Error(e);
        }catch (Exception e) {
            log.error("==reportInfo=="+e.getMessage());
            return BaseRespUtil.Error(IntfErrorCode.INFT_ERROR);
        }
    }



    /**
     * 主要领导审核
     *
     * @param hiddenReportSuperviseAuditReq 分页模板
     * @return 删除结果
     */
    @ApiOperation(value = "主要领导审核")
    @SysLog("主要领导审核")
    @PostMapping("/mainAudit")
    public BaseResp mainAudit(@RequestBody HiddenReportSuperviseAuditReq hiddenReportSuperviseAuditReq) {
        try {
            BaseResp baseResp = hiddenReportService.mainAudit(hiddenReportSuperviseAuditReq);
            return baseResp;
        }catch (UABPException e){
            return BaseRespUtil.Error(e);
        }catch (Exception e) {
            log.error("==reportInfo=="+e.getMessage());
            return BaseRespUtil.Error(IntfErrorCode.INFT_ERROR);
        }
    }


    /**
     * 获取历史审批记录
     *
     * @param reportAuditRecordListReq 分页模板
     * @return 删除结果
     */
    @ApiOperation(value = "获取历史审批记录")
    @SysLog("获取历史审批记录")
    @PostMapping("/getReportRecord")
    public BaseResp getReportRecord(@RequestBody ReportAuditRecordListReq reportAuditRecordListReq) {
        try {
            BaseResp baseResp = hiddenReportService.getReportRecord(reportAuditRecordListReq);
            return baseResp;
        }catch (UABPException e){
            return BaseRespUtil.Error(e);
        }catch (Exception e) {
            log.error("==reportInfo=="+e.getMessage());
            return BaseRespUtil.Error(IntfErrorCode.INFT_ERROR);
        }
    }

    /**
     * 获取小程序用户上报的隐患列表
     *
     * @param pageQueryModel 分页模板
     * @return 删除结果
     */
    @SysLog("获取小程序用户上报的隐患列表")
    @PostMapping("/myReportList")
    public BaseResp<List<HiddenReportResp>> myReportList(@RequestBody HiddenReportListReq hiddenReportListReq) {
        try {
            BaseResp<List<HiddenReportResp>> baseResp = hiddenReportService.myReportList(hiddenReportListReq);
            return baseResp;
        } catch (UABPException e) {
            return BaseRespUtil.Error(e);
        }
    }







}
